home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
newsgrp
/
group93b.txt
/
000053_icon-group-sender _Thu Apr 29 14:17:49 1993.msg
< prev
next >
Wrap
Internet Message Format
|
1993-06-16
|
5KB
Received: by cheltenham.cs.arizona.edu; Mon, 3 May 1993 12:47:51 MST
Date: 29 Apr 93 14:17:49 GMT
From: cis.ohio-state.edu!zaphod.mps.ohio-state.edu!uwm.edu!linac!uchinews!ellis!goer@ucbvax.Berkeley.EDU (Richard L. Goerwitz)
Organization: University of Chicago
Subject: Re: runtime debugger and the Icon fan club.
Message-Id: <1993Apr29.141749.24949@midway.uchicago.edu>
References: <9304281927.AA17778@roll.csd.sgi.com>
Sender: icon-group-request@cs.arizona.edu
To: icon-group@cs.arizona.edu
Status: R
Errors-To: icon-group-errors@cs.arizona.edu
mitch@roll.csd.sgi.com (Tom Mitchell) makes some interesting comments
on a posting of mine:
>|does not cater to the introductory CS course regimen. Icon has, as its
>|natural constituency, people interested in AI, NLP, text, translation,
>|and general nonnumeric computing.
>
>I wonder, since Icon is implemented in 'C' it might be considered
>dependent on 'C' and thus less interesting. Also given that there
>is also a strong bias toward stronger type defines in ANSI 'C',
>the lack of type checking in Icon could be seen as a loss
>against the curriculum goals.
Actually, if you think deeply about it, you'll notice that Icon has
more extensive type checking than most other languages. It is a very
strongly typed language. This does not mean, however, that it is
statically typed. If strong/dynamic typing is seen as a deficit (and
I believe you that it is), then this is very odd, since in fact a great
many higher-level languages use similar schemes.
The way Icon works is this: Objects of any type can be assigned to a
variable. The language always knows what type data object that variable
reflects at any given time. The variable, however, may be assigned a
new object of any type, though. In this case, Icon still knows what
type the variable is, and it knows (moreover) whether to garbage-collect
the old object. Described in this way, Icon hardly differs from LISP,
which is used by many CS instructors as a first programming language
instead of Pascal (and rightly so, since it allows one to move rapidly
into the conceptual foundations of programming).
>Just in case should some one sets out to do this. An
>irritant to me is little inconsistent 'features' like {} and ;
>omissions where the parser can permit such things to be
>omitted in one place and not in others.
I am not sure what you're talking about when it comes to {}, except
in the sense that {} can always be used to group a code block, just
as in C. Automatic semicolon insertion is also an interesting issue. Most
inveterate Icon programmers find it silly to have to insert a semicolon
after every line. We mainly use the semicolon to separate two expres-
sions abutted on the same line. Generally it is lacking from idiomatic
Icon code, and with good reason: It is generally superfluous even in
languages that force one to use it!
>Sort of a summary:
>
>Does Icon support these goals in the first two years of a CS
>education? Mostly not I suspect.
What are introductory CS goals? I'd say they are: 1) getting a basic
grasp of control flow, 2) learning about basic data structures, and 3)
getting some hands-on, practical experience cutting code. Good stu-
dents should be exposed to several styles of programming, and language
paradigms. They need not actually study them (and in fact probably
should not at this level), but students should have explained to them
about 1) classic languages like LISP, 2) non-imperative, backtracking
languages like Prolog, 3) standard data structures, control-flow, and
scoping mechanisms found in Algol-family languages, and 4) object-ori-
ented programming languages and/or techniques.
My problem is that I had to learn all of this stuff on my own, being a
humanities student. It is misery and agony trying to exist in a world
where introductory programming to most people means learning about fac-
toring and sorting algorithms in a cut-down language like Pascal. For
a humanities student, these sorts of things are largely irrelevant, or
at least not relevant at the introductory level.
>What are the curriculum goals of a CS education? What are
>the education goals of a non CS education.
For a humanities programmer the goals are exactly the same as for a CS
programmer. The only difference is that the actual content of 3 above.
At least this has been my *personal* experience.
>Does Icon support the CS needs of a non-CS education?
I can't honestly say I know until I've had the chance to teach a few
introductory humanities programming courses, which I doubt I'll get to
do, seeing as my degree is in Near Eastern Languages & Civilizations :-).
Interesting comments you make, though.
--
-Richard L. Goerwitz goer%midway@uchicago.bitnet
goer@midway.uchicago.edu rutgers!oddjob!ellis!goer